/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package kernel;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Date;
import kernel.Kunden;

/**
 *
 * @author coco
 */

class Kunden {
     int ID;
     String name;
     String vorname;
     String geburtsdatum;
     String fuehrerscheindatum;
     String fuehrerscheinklassen;
     String adresse;
     String anrede;
     String telefonnummer;
     String ausweisnummer;
     String firmennamen;
     float rebatt;
    public Kunden(int NID,String N,String VN,String Gd,String FSD, String FSK,String Adr,String Anr, String Tel,String AusN, String FirmenD, Float Rab){
       ID=NID; name=N;vorname=VN;geburtsdatum=Gd;fuehrerscheindatum=FSD;fuehrerscheinklassen=FSK;adresse=Adr;anrede=Anr;telefonnummer=Tel;ausweisnummer=AusN;firmennamen=FirmenD;rebatt=Rab;
    }
}
public class Customer {
    
    private int ID;
    private String name;
    private String vorname;
    private String geburtsdatum;
    private String fuehrerscheindatum;
    private String fuehrerscheinklassen;
    private String adresse;
    private String anrede;
    private String telefonnummer;
    private String ausweisnummer;
    private String firmennamen;
    private String aktiv;
    private float rebatt;

    public float getRebatt() {
        return rebatt;
    }

    public void setRebatt(float rebatt) {
        this.rebatt = rebatt;
    }

    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public String getAdresse() {
        return adresse;
    }

    public void setAdresse(String adresse) {
        this.adresse = adresse;
    }

    public String getAktiv() {
        return aktiv;
    }

    public void setAktiv(String aktiv) {
        this.aktiv = aktiv;
    }

    public String getAnrede() {
        return anrede;
    }

    public void setAnrede(String anrede) {
        this.anrede = anrede;
    }

    public String getAusweisnummer() {
        return ausweisnummer;
    }

    public void setAusweisnummer(String ausweisnummer) {
        this.ausweisnummer = ausweisnummer;
    }

    public String getFirmennamen() {
        return firmennamen;
    }

    public void setFirmennamen(String firmennamen) {
        this.firmennamen = firmennamen;
    }

    public String getFuehrerscheindatum() {
        return fuehrerscheindatum;
    }

    public void setFuehrerscheindatum(String fuehrerscheindatum) {
        this.fuehrerscheindatum = fuehrerscheindatum;
    }

    public String getFuehrerscheinklassen() {
        return fuehrerscheinklassen;
    }

    public void setFuehrerscheinklassen(String fuehrerscheinklassen) {
        this.fuehrerscheinklassen = fuehrerscheinklassen;
    }

    public String getGeburtsdatum() {
        return geburtsdatum;
    }

    public void setGeburtsdatum(String geburtsdatum) {
        this.geburtsdatum = geburtsdatum;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getTelefonnummer() {
        return telefonnummer;
    }

    public void setTelefonnummer(String telefonnummer) {
        this.telefonnummer = telefonnummer;
    }

    public String getVorname() {
        return vorname;
    }

    public void setVorname(String vorname) {
        this.vorname = vorname;
    }
    
    
    
    
public static String newCustomer(String ID,String name, String vorname,String geburtsdatum,String fuehrerscheindatum,String fuehrerscheinklassen,String adresse,String anrede,String telefonnummer,String ausweisnummer,String firmennamen,String aktiv) throws ParseException{
        Connection conn = null; //initialisation de la connexion
                String masklayout = "yyyy-MM-dd";
        String maskdb = "dd.MM.yyyy";
        SimpleDateFormat formatter = new SimpleDateFormat(maskdb);
        SimpleDateFormat formatterDisplay = new SimpleDateFormat(masklayout);
        Date auxDate = new Date();
        try {
            conn=kernel.ConnectDB.ConnectDB(); 

            CallableStatement stmt = conn.prepareCall("call CREATE_CUSTOMER(?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
            //  set the in param
            stmt.setString(1,ID);
            stmt.setString(2, name.replace("'","''"));
            stmt.setString(3, vorname.replace("'","''"));
            auxDate = formatter.parse(geburtsdatum);
            stmt.setString(4,formatterDisplay.format(auxDate));
            auxDate = formatter.parse(fuehrerscheindatum);
            stmt.setString(5,formatterDisplay.format(auxDate));
            stmt.setString(6, fuehrerscheinklassen.replace("'","''"));
            stmt.setString(7, adresse.replace("'","''"));
            stmt.setString(8, anrede.replace("'","''"));
            stmt.setString(9, telefonnummer.replace("'","''"));
            System.out.println("O numero dado é:"+ausweisnummer);
            stmt.setString(10, ausweisnummer.replace("'","''"));
            stmt.setString(11, firmennamen.replace("'","''"));
            stmt.setString(12,"1.0");
            //set the out param
            int Integer=0;
          stmt.registerOutParameter(13, 14);

		
            ResultSet rs = stmt.executeQuery();
            String result=stmt.getString(13);
            int error=stmt.getInt(14);
            System.out.println("Vous etes déconnecté mon general");
            if(error==1){return ("1");}
            if(error==2){return("2");}
            return(result);
            
            
        } catch (SQLException e) {
            e.printStackTrace();
            return(null);
       }
       
}
public static String[][] searchcustomer(String arg1, int arg2, String arg3) throws ParseException{
    
        String masklayout = "dd.MM.yyyy";
        String maskdb = "yyyy-MM-dd";
        SimpleDateFormat formatter = new SimpleDateFormat(maskdb);
        SimpleDateFormat formatterDisplay = new SimpleDateFormat(masklayout);
        
        Date auxDate = new Date();
        
        Connection conn = null; //initialisation de la connexion
                String [][] données = null;
        ArrayList <Kunden> custom;
        String Kundens[][] = null;
        if((arg2==0)&&(arg3.equals(""))){
            arg3="%%";
        }
        try {
            conn=kernel.ConnectDB.ConnectDB(); 

            //CallableStatement stmt = conn.prepareCall("call SEARCH_CUSTOMER()");
            //  set the in param

            CallableStatement stmt;
            stmt=conn.prepareCall("call SEARCH_CUSTOMER(?,?,?)");
            
            stmt.setString(1,arg1);
            stmt.setInt(2, arg2);
            stmt.setString(3, arg3.replace("'","''"));
            ResultSet rs = stmt.executeQuery();
            //set the out param
            int Integer=0;
          
int i=0;
            custom = new ArrayList <Kunden>();
            while (rs.next( )){
                custom.add(new Kunden(rs.getInt("kundenid"),rs.getString("name"),rs.getString("vorname"),rs.getDate("geburtsdatum").toString(),rs.getDate("fuehrerscheindatum").toString(),rs.getString("fuehrerscheinklassen"),rs.getString("adresse"),rs.getString("anrede"),rs.getString("telefonnummer"),rs.getString("ausweisnummer"),rs.getString("firmennamen"),rs.getFloat("rabattfaktor")));
                i++;
            }
            //puis dans un tableau
            int nbLignes = i;
            Kundens = new String [nbLignes][13];
            for(i=0;i<nbLignes;i++){
                Kunden b = custom.get(i);
                auxDate = formatter.parse(b.geburtsdatum);
                Kundens[i][0]=String.valueOf(b.ID);
                Kundens[i][2]=b.name;
                Kundens[i][3]=b.vorname;
                Kundens[i][4]=formatterDisplay.format(auxDate);
                auxDate = formatter.parse(b.fuehrerscheindatum);
                Kundens[i][8]=formatterDisplay.format(auxDate);
                Kundens[i][7]=b.fuehrerscheinklassen;
                Kundens[i][5]=b.adresse;
                Kundens[i][1]=Customer.numberToAnrede((int) Float.parseFloat(b.anrede));
                Kundens[i][6]=b.telefonnummer;
                Kundens[i][10]=b.ausweisnummer;
                Kundens[i][11]=b.firmennamen;
                Kundens[i][9]=Float.toString(b.rebatt);
                
            }          
           
            
  //        while(  rs.next()){
    //      String toto=rs.getString(1);
    //      System.out.println(toto);
      //    }
            System.out.println("Vous etes déconnecté mon general");
          
            return(Kundens);
            
            
        } catch (SQLException e) {
            e.printStackTrace();
            return(null);
       }
       
}
public static String updateCustomer(String ID,String id,String name, String vorname,String geburtsdatum,String fuehrerscheindatum,String fuehrerscheinklassen,String adresse,String anrede,String telefonnummer,String ausweisnummer,String firmennamen,String aktiv,float faktor) throws ParseException{
        String masklayout = "yyyy-MM-dd";
        String maskdb = "dd.MM.yyyy";
        SimpleDateFormat formatter = new SimpleDateFormat(maskdb);
        SimpleDateFormat formatterDisplay = new SimpleDateFormat(masklayout);
        Date auxDate = new Date();
    Connection conn = null; //initialisation de la connexion
        try {
            conn=kernel.ConnectDB.ConnectDB();

            CallableStatement stmt = conn.prepareCall("call UPDATE_CUSTOMER(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
            //  set the in param
            stmt.setString(1,ID);
            stmt.setString(2,id);
            stmt.setString(3, name.replace("'","''"));
            stmt.setString(4, vorname.replace("'","''"));
            auxDate = formatter.parse(geburtsdatum);
            stmt.setString(5,formatterDisplay.format(auxDate));
            auxDate = formatter.parse(fuehrerscheindatum);
            stmt.setString(6,formatterDisplay.format(auxDate));
            stmt.setString(7, fuehrerscheinklassen.replace("'","''"));
            stmt.setString(8, adresse.replace("'","''"));
            stmt.setString(9, anrede.replace("'","''"));
            stmt.setString(10, telefonnummer.replace("'","''"));
            stmt.setString(11, ausweisnummer.replace("'","''"));
            stmt.setString(12, firmennamen.replace("'","''"));
            stmt.setString(13,aktiv);
            stmt.setFloat(14,faktor);
            //set the out param
            int Integer=0;
          stmt.registerOutParameter(15, 16);


            ResultSet rs = stmt.executeQuery();
            String result=stmt.getString(15);
            int error=stmt.getInt(16);
            System.out.println("Vous etes déconnecté mon general");
            if(error==1){return ("1");}

            return(result);


        } catch (SQLException e) {
            e.printStackTrace();
            return(null);
       }
}

public static String numberToAnrede(int number){
    String anrede = new String();
    if(number==1) anrede="Herr";
    else anrede="Frau";
    return anrede;
}

}
